package rest.pojo.conversor;

import entidade.Produtor;
import java.util.ArrayList;
import java.util.List;
import rest.pojo.ProdutorPOJO;

public class ProdutorConverter {

    private static final ProdutorConverter uniqueInstance = new ProdutorConverter();

    private ProdutorConverter() {

    }

    public static ProdutorConverter getInstance() {
        return uniqueInstance;
    }

//      public static ProdutorPOJO toProdutorPOJO(Produtor produtor){
//        ProdutorPOJO resposta= toProdutorPOJOSimples(produtor);
//
//        System.out.println("resposta "+resposta.getId());
//        return resposta;
//        
//    }
    public static ProdutorPOJO toProdutorPOJO(Produtor produtor) {

        if (produtor != null) {
            ProdutorPOJO resposta = new ProdutorPOJO();
            resposta.setId(produtor.getId());
            resposta.setAssociacao(AssociacaoConverter.toAssociacaoPOJO(produtor.getAssociacao()));
            resposta.setCnpj(produtor.getCnpj());
            resposta.setCpf(produtor.getCpf());
            resposta.setLocal(LocalConverter.toLocalPOJO(produtor.getLocal()));
            resposta.setUsuario(UsuarioConverter.toUsuarioPOJO(produtor.getUsuarioId()));

            return resposta;

        } else {
            return null;
        }
    }

    public static Produtor fromProdutorPOJO(ProdutorPOJO produtorPOJO) {
        if (produtorPOJO != null) {
            Produtor resposta = new Produtor();

            resposta.setId(produtorPOJO.getId());
            resposta.setNome(produtorPOJO.getNome());
            resposta.setCnpj(produtorPOJO.getCnpj());
            resposta.setAssociacao(AssociacaoConverter.fromAssociacaoPOJO(produtorPOJO.getAssociacao()));
            resposta.setCpf(produtorPOJO.getCpf());
            resposta.setRg(produtorPOJO.getRg());
            resposta.setLocal(LocalConverter.fromLocalPOJO(produtorPOJO.getLocal()));
            resposta.setSobrenome(produtorPOJO.getSobrenome());
            resposta.setTelefone(produtorPOJO.getTelefone());
            resposta.setUsuarioId(UsuarioConverter.fromUsuarioPOJO(produtorPOJO.getUsuario()));
            

            return resposta;

        } else {
            return null;
        }
    }

    public static List<ProdutorPOJO> toProdutoresPOJO(List<Produtor> produtores) {
        if (produtores != null) {

            ArrayList<ProdutorPOJO> resposta = new ArrayList<>();

            produtores.stream().forEach((produtor) -> {
                resposta.add(toProdutorPOJO(produtor));
            });

            return resposta;
        } else {
            return null;
        }

    }

    public static List<Produtor> fromProdutoresPOJO(List<ProdutorPOJO> produtoresPOJO) {
        if (produtoresPOJO != null) {

            ArrayList<Produtor> resposta = new ArrayList<>();

            produtoresPOJO.stream().forEach((ProdutorPOJO produtorPOJO) -> {
                resposta.add(fromProdutorPOJO(produtorPOJO));
            });

            return resposta;
        } else {
            return null;
        }
    }

}
